Maximum sustainable encoding bit rates for video downloads

ABSTRACT

Described embodiments include a system that includes a network interface and a processor. The processor is configured to identify, via the network interface, a state of congestion in a communication channel between a base station belonging to a cellular network and a client device, to calculate, responsively to the state of congestion, a maximum sustainable encoding bit rate (MSEBR) for a video that is being downloaded by the client device, from a server, via the communication channel, the video being encoded at a plurality of different predefined bit rates, and to inhibit the client device, in response to calculating the MSEBR, from downloading a segment of the video that is encoded at any one of the predefined bit rates that exceeds the MSEBR. Other embodiments are also described.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application claims the benefit of U.S. Provisional Appl. No.62/324,932, filed Apr. 20, 2016, whose disclosure is incorporated hereinby reference.

FIELD OF THE INVENTION

The present invention relates to the field of cellular communication,and specifically to the downloading of content, such as video content,over a cellular network.

BACKGROUND

Adaptive Bit Rate (ABR) is a multimedia streaming technique in whichmultimedia content is streamed to a client in segments, typically ofequal duration, that may differ from each other in their respectiveencoding bit rates. Typically, when requesting a segment, the clientspecifies an encoding bit rate from a plurality of predefined bit rates,and the server then streams the requested segment having the specifiedencoding bit rate to the client. ABR can be used over variouscommunication protocols, such as Hyper-Text Transfer Protocol (HTTP) andHTTP-Secure (HTTPS).

To avoid any confusion, it is important to distinguish between “encodingbit rate” and “communication bit rate.” The term “encoding bit rate”refers to the bit rate at which the media (e.g., video) content providedto the client is encoded. Generally, a high encoding bit ratecorresponds to high media quality, and vice versa. The term“communication bit rate,” on the other hand, refers to the bit rate atwhich the media is downloaded by the client. The communication bit rateis not necessarily related to the encoding bit rate. For example, for agiven encoding bit rate, the communication bit rate may vary, dependingon the conditions of the communication channel to the client. (It isnoted that the present application also refers to a “streaming bitrate,” the rate at which the video is streamed from the server, whichmay be greater than the communication bit rate.)

Jain, A. et al., Mobile Throughput Guidance Inband Signaling Protocol,IETF Internet Draft, Sep. 7, 2015, which is incorporated herein byreference, proposes a mechanism and protocol elements that allow acellular network to provide near real-time information on capacityavailable to the TCP server. This “Throughput Guidance” (TG) informationwould indicate the throughput estimated to be available at the radiodownlink interface (between the Radio Access Network (RAN) and themobile device (UE)). The TCP server can use this TG information toensure high network utilization and high service delivery performance.The document describes the applicability of the proposed mechanism forvideo delivery over cellular networks; it also presents test resultsfrom a live operator's environment.

SUMMARY OF THE INVENTION

There is provided, in accordance with some embodiments of the presentinvention, a system that includes a network interface and a processor.The processor is configured to identify, via the network interface, astate of congestion in a communication channel between a base stationbelonging to a cellular network and a client device. The processor isfurther configured to calculate, responsively to the state ofcongestion, a maximum sustainable encoding bit rate (MSEBR) for a videothat is being downloaded by the client device, from a server, via thecommunication channel, the video being encoded at a plurality ofdifferent predefined bit rates. The processor is further configured toinhibit the client device, in response to calculating the MSEBR, fromdownloading a segment of the video that is encoded at any one of thepredefined bit rates that exceeds the MSEBR.

In some embodiments, the processor is configured to inhibit the clientdevice from downloading the segment by causing the client device todownload a different segment of the video that is encoded at a highestone of the predefined bit rates that does not exceed the MSEBR.

In some embodiments, the processor is configured to identify the stateof congestion by ascertaining a number of bytes of streamed contentdestined for the client device that were not yet acknowledged by theclient device.

In some embodiments, the processor is configured to calculate the MSEBRbased on historical communication bit rates at which the video wasdownloaded, via the communication channel, by the client device.

In some embodiments, the processor is configured to calculate the MSEBRas a weighted average of (i) a most recent MSEBR, which is based on thehistorical communication bit rates, and (ii) a quantity based on anestimated current communication bit rate at which content is beingdownloaded by the client device.

In some embodiments, the processor is further configured to estimate thecurrent communication bit rate, based on an estimated number of bytes ofcontent that were received by the client device during a precedingperiod of time.

In some embodiments, the MSEBR is a first MSEBR, and the processor isfurther configured:

to estimate, subsequently, a current communication bit rate at whichcontent is being downloaded by the client device;

to calculate a second MSEBR, responsively to the estimated currentcommunication bit rate exceeding the first MSEBR by more than athreshold; and

to apply the second MSEBR to the downloading of the video, by inhibitingthe client device from downloading a segment of the video that isencoded at any one of the predefined bit rates that exceeds the secondMSEBR.

In some embodiments, the processor is further configured to cause thecommunication bit rate to exceed the first MSEBR by more than thethreshold, by controlling the communication bit rate.

In some embodiments, the processor is configured to inhibit the clientdevice from downloading the segment by controlling a communication bitrate at which the client device downloads content, such that the clientdevice refrains from requesting the segment from the server.

In some embodiments, the processor is configured to control thecommunication bit rate by:

receiving streamed packets en-route to the client device, and

releasing the packets, to the client device, such as to achieve adesired communication bit rate.

In some embodiments, the processor is configured to inhibit the clientdevice from downloading the segment by communicating the MSEBR to theclient device, such that the client device refrains from requesting thesegment from the server.

There is further provided, in accordance with some embodiments of thepresent invention, a system that includes a network interface and aprocessor. The processor is configured to calculate a default maximumsustainable encoding bit rate (MSEBR) for a base station belonging to acellular network, based on historical communication bit rates at whichcontent was downloaded via the base station by a plurality of devices.The processor is further configured to identify, via the networkinterface, that a client device is requesting to download a video, froma server, via the base station, the video being encoded at a pluralityof different predefined bit rates. The processor is further configuredto inhibit the client device, in response to the identifying, fromdownloading a segment of the video that is encoded at any one of thepredefined bit rates that exceeds the default MSEBR.

In some embodiments, the processor is configured to inhibit the clientdevice from downloading the segment by causing the client device todownload a different segment of the video that is encoded at a highestone of the predefined bit rates that does not exceed the default MSEBR.

In some embodiments, the processor is configured to inhibit the clientdevice from downloading the segment in response to the client devicehaving switched to the base station while downloading the video.

There is further provided, in accordance with some embodiments of thepresent invention a method. The method includes, using a processor,identifying a state of congestion in a communication channel between abase station belonging to a cellular network and a client device. Themethod further includes, responsively to the state of congestion,calculating a maximum sustainable encoding bit rate (MSEBR) for a videothat is being downloaded by the client device, from a server, via thecommunication channel, the video being encoded at a plurality ofdifferent predefined bit rates. The method further includes, in responseto calculating the MSEBR, inhibiting the client device from downloadinga segment of the video that is encoded at any one of the predefined bitrates that exceeds the MSEBR.

There is further provided, in accordance with some embodiments of thepresent invention, another method. The method includes, using aprocessor, calculating a default maximum sustainable encoding bit rate(MSEBR) for a base station belonging to a cellular network, based onhistorical communication bit rates at which content was downloaded viathe base station by a plurality of devices. The method further includesidentifying that a client device is requesting to download a video, froma server, via the base station, the video being encoded at a pluralityof different predefined bit rates. The method further includes, inresponse to the identifying, inhibiting the client device fromdownloading a segment of the video that is encoded at any one of thepredefined bit rates that exceeds the default MSEBR.

The present invention will be more fully understood from the followingdetailed description of embodiments thereof, taken together with thedrawings, in which:

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a schematic illustration of a system for managing thedownloading of video content over a cellular network, in accordance withsome embodiments of the present invention;

FIG. 2 is a schematic illustration of a cyclic array maintained by aprocessor for a particular client and a particular base station in acellular network, in accordance with some embodiments of the presentinvention; and

FIG. 3 is a schematic illustration of a technique for applying a maximumsustainable encoding bit rate to a video download by managing acommunication bit rate of the download, in accordance with someembodiments of the present invention.

DETAILED DESCRIPTION OF EMBODIMENTS Overview

Embodiments of the present invention provide systems and methods forproviding a better user experience in ABR streaming of video contentover cellular networks, such as Universal Mobile TelecommunicationsService (UMTS) and Long Term Evolution (LTE) networks.

In ABR video streaming, each segment of video is encoded at severalpredefined bit rates. For example, each segment may be encoded at 300kbps, 700 kbps, 1 Mbps, and 1.4 Mbps. Upon receiving a download requestfrom a client device (or “client”), the video server streams the videoto the client, segment-by-segment. Typically, the client requests eachnew segment by sending, to the server, a GET message, in which theclient specifies the number of the segment, along with a particularencoding bit rate. The server, upon receiving the GET message, selectsthe segment having the requested number and encoding rate, and thensends this segment to the client.

The client stores each downloaded segment of video in the client'sbuffer, and, as the video is played, the downloaded content is drawnfrom the buffer. If the downloading of new content does not keep pacewith the playback, the buffer becomes empty, and a stall in the playbackoccurs.

Typically, the client selects the desired encoding bit rate responsivelyto the state of the buffer, which, in turn, generally indicates thestate of the communication channel between the server and the client.For example, if the buffer is empty, or nearly empty, e.g., due tolimitations in channel bandwidth or otherwise poor channel conditions,the client may request a lower encoding bit rate, in order to facilitatea faster downloading of content. For example, if the client wasdownloading segments encoded at 1 Mbps, but the buffer became empty, theclient may request a lower encoding bit rate of, for example, 700 kbps.Conversely, if the buffer is full, the client may request a higherencoding bit rate.

Similarly, the client may select the desired encoding bit rateresponsively to the rate at which a requested segment of video wasdownloaded. For example, if the client sees that a particular segmentwas downloaded relatively quickly, the client may request that the samesegment be streamed to the client again, at a higher encoding bit rate.

Generally, there are several drawbacks to traditional ABR techniques,particularly when these techniques are implemented in cellular networks:

(i) Upon starting to download a video, the client does not yet know themost suitable encoding bit rate to request. Consequently, the client maytry several different encoding bit rates, before settling on the mostsuitable encoding bit rate. This initial trial period may cause theuser's viewing experience to be compromised. In particular, if theclient plays the video during the trial period, the user may bedisturbed by the frequent changes in video quality; if the client doesnot play the video, the user may be disturbed by the long start delay.

(ii) In cellular networks, short-term changes in communication-channelconditions frequently occur, e.g., due to changes in the number ofclients utilizing the cell. (It is noted that a change in the number ofclient utilizing a cell may have a large impact on the bandwidthavailable to each client, if, as is typically the case, the number ofclients utilizing the cell is small.) Such a change may, in turn, causea short-term change in the download rate, or in the state of the bufferof the client, such that the client requests a different encoding bitrate. Subsequently, however, the client may not react quickly enoughwhen the communication channel reverts to its previous state. As aresult, the communication channel may be underutilized, such that thevideo quality is unnecessarily poor, or overutilized, such that stallsin the playback are experienced. Moreover, even if the client reacts tothe reversion in channel conditions by requesting the previous encodingbit rate, the user's viewing experience may be compromised, due to thefrequent changes in video quality.

(iii) Since the client typically does not know the level of congestionin the communication channel between the base station and the client,the client may not necessarily request the most appropriate encoding bitrate. For example, even if the communication channel is not congested,the client may, in some cases, request a lower encoding bit rate.

(iv) The cells within a network may vary from each other with respect tothe bandwidth that is available for utilization. Hence, upon moving to anew cell, a client may experience a drop in available bandwidth, suchthat a stall in playback is experienced before the client realizes theneed to request a lower encoding bit rate. Conversely, the client maycontinue to download video at a lower encoding bit rate for some time,despite more bandwidth being available in the new cell.

To overcome these problems, embodiments of the present invention providea system that calculates a maximum sustainable encoding bit rate (MSEBR)for each video download, and then inhibits the client device fromdownloading segments of the video encoded at an encoding bit rate thatexceeds the MSEBR. In particular, typically, the system causes theclient to download segments of the video encoded at the highest encodingbit rate that is less than the calculated MSEBR. The MSEBR is based onboth current and historical activity, is specific to the cell in whichthe video is downloaded, and may take into account the activity of otherclients within the cell. Moreover, the MSEBR is typically lowered onlyif the communication channel between the base station and the client iscongested. As a result, each of the above drawbacks is overcome, asfollows:

(i) The client may be able to forego the initial trial period, andimmediately begin downloading at the encoding bit rate implied by thecalculated MSEBR. Even if the client was not recently active, anappropriate MSEBR may be calculated for the download, based on thecurrent and historical activity of other clients within the cell.

(ii) Since the MSEBR takes historical activity into account, short-termfluctuations in channel conditions are less likely to impact theencoding bit rate that is used. For example, despite a short-termincrease in the available bandwidth, the client may continue to downloadat a lower encoding bit rate, if history shows that a higher encodingbit rate is not sustainable. As a result, even when the availablebandwidth reverts to its lower historical level, the playback of thevideo will not stall.

(iii) By lowering the MSEBR only if the communication channel betweenthe base station and the client is congested, unnecessary requests forlower encoding bit rates may be avoided.

(iv) Upon a client moving to a new cell during a download, a new MSEBR,which is specific for the new cell, may be quickly applied, such thatthe encoding bit rate is adjusted appropriately. As described above,even if the client was not recently active in this new cell, anappropriate MSEBR may be calculated, based on the activity of otherclients within the new cell.

Typically, the system is located between the radio access network (RAN)and the core network (CN) of the cellular network, such that the systemmay monitor all data traffic passing between the RAN and the CN. Due tothis high-level view of activity in the network, the system maycalculate an appropriate MSEBR for each video streaming, taking intoaccount, as necessary, the historical and current activity of manyclient devices. Moreover, since all of the data traffic passes throughthe system, the system may further apply the MSEBR to a video downloadby managing the rate at which packets of the video are passed to theclient, or by informing the client of the MSEBR by including the MSEBRin packets that are passed to the client.

In other embodiments, the system is located outside of the cellularnetwork, and passively monitors the flow of communication traffic acrossthe network. In such embodiments, the system may apply the MSEBR to thedownload by passing appropriate messages to the client.

In some embodiments, to periodically update the MSEBR during a givendownload, the system maintains, in memory, a record of any packets thatwere streamed to the client, along with a record of any acknowledgepackets, sent by the client, acknowledging receipt of any of thesestreamed packets. Based on these records, the system periodicallyestimates the current communication bit rate (CBR) at which content isbeing downloaded by the client; for example, the system may estimate thenumber of downloaded bits that were acknowledged by the client during aparticular period of time leading up to the most recent acknowledgepacket. For example, if X bits were downloaded during the one secondleading up to the most recent acknowledge packet, the system mayestimate a current CBR of X bps. The system may then increase theclient's MSEBR, if this rate X is sufficiently greater than the currentMSEBR.

For example, it will be assumed that the client's MSEBR is currently 1.2Mbps, such that—given predefined encoding bit rates of 300 kbps, 700kbps, 1 Mbps, and 1.4 Mbps—the client is currently downloading at anencoding bit rate of 1 Mbps. In such a case, an estimated current CBR of1.6 Mbps indicates that the client is underutilizing the availablebandwidth. The system may therefore increase the client's MSEBR, byapplying a weighted average of the current MSEBR (1.2 Mbps) with anysuitable quantity that is based on the current CBR (1.6 Mbps), such as atimes the current CBR, where a is between 0 and 1. Over time, if thecommunication bit rate of 1.6 Mbps persists, the system may continue toraise the MSEBR toward 1.6 Mbps, until the MSEBR reaches the nextpredefined encoding bit rate of 1.4 Mbps. The client will then begindownloading at an encoding bit rate of 1.4 Mbps.

The system may also ascertain the current level of congestion in thecommunication channel, between the base station and the client, viawhich the video is being downloaded, and adjust the MSEBR responsivelythereto. For example, the system may ascertain the total number of bytes(or bits) that were streamed to the client, but not yet acknowledged bythe client. If this quantity (or another quantity derived therefrom) isabove a particular threshold for a certain duration, and particularly ifthis quantity is seen to be increasing over time, the system mayconclude that the communication channel between the client and the basestation is congested. Such a situation may indicate that the currentencoding bit rate is too high. The system may therefore lower the MSEBR,by applying a weighted average of the MSEBR with the current CBR, whichmay be ascertained as described above. Over time, if the state ofcongestion persists, the system may continue to lower the MSEBR, untilthe MSEBR is less than the current encoding bit rate. At that point, theclient will begin to download at a lower encoding bit rate.

The system may also periodically update the default MSEBR for aparticular cell, by applying a weighted average of the current cellMSEBR with the respective MSEBRs of all of the clients in the cell whosecommunication channels are currently congested. This default MSEBR maybe used for any client that begins to download video in the cell.

To apply the MSEBR to the download, e.g., by causing the download toproceed at the highest encoding bit rate that does not exceed the MSEBR,one of the following techniques may be used:

(i) The system may instruct the server to stream the video content at anappropriate rate, such that the communication bit rate does not exceedthe MSEBR, and the client, therefore, does not request a higher encodingbit rate. For example, if the MSEBR is 800 kbps, the system may instructthe server to stream the video content at a streaming bit rate ofapproximately 800 kbps.

(ii) The system may delay packets en-route to the client, in accordancewith the MSEBR. For example, if the MSEBR is 800 kbps, the system maykeep the communication bit rate from exceeding 800 kbps, such that theclient doesn't request an encoding bit rate that is higher than 800kbps.

(iii) The system may periodically inform the client of the MSEBR, andthe client may, in response to receiving the MSEBR, request theappropriate encoding bit rate from the server. (The client may beconfigured to periodically request the MSEBR from the system.) Forexample, in response to receiving, from the system, an MSEBR of 800kbps, the client may request an encoding bit rate of 700 kbps. (In someembodiments, the system informs the client of the MSEBR by adding theMSEBR to a packet sent from the server to the client; typically,however, the system sends the MSEBR to the client in a separatemessage.)

(iv) The system may periodically inform the server of the MSEBR, such asby including the MSEBR in an acknowledge message (e.g., within theTransmission Control Protocol (TCP) options of the message) sent to theserver. In response to receiving the MSEBR, the server may select theappropriate encoding bit rate for download, ignoring any request fromthe client for a higher encoding bit rate. For example, in response toreceiving an MSEBR of 800 kbps, the server may select the highestpre-defined encoding bit rate that does not exceed 800 kbps, such as 700kbps.

The first and second techniques delineated above apply the MSEBR bylimiting the rate at which video content is downloaded by the client.When performing such techniques, it may be necessary, on occasion, to“test” the communication channel, in order to ascertain if a higherencoding bit rate is achievable. Hence, typically, the system, atvarious intervals (e.g., periodically), causes the video content to bestreamed from the server, or released from the processor, at a rate thatexceeds the MSEBR. After each such test, the system may increase theMSEBR (and hence, the encoding bit rate), if the client successfullydownloads the content at a sufficiently high rate.

The techniques described herein may be applied to any suitable ABRprotocol, including, for example, HTTP Live Streaming (HLS), DynamicAdaptive Streaming over HTTP (DASH), Adobe HTTP Dynamic Streaming,Microsoft Smooth Streaming, or any proprietary ABR protocol used by anygiven content provider. Although the present disclosure relates mainlyto the downloading of video, it is noted that the techniques describedherein may also be applied to the downloading of any other type ofcontent, such as audio content, in which packets of data are streamed ata variable rate of encoding.

System Description

Reference is initially made to FIG. 1, which is a schematic illustrationof a system 20 for managing the downloading of video content over acellular network, in accordance with some embodiments of the presentinvention.

FIG. 1 depicts a plurality of users 30 downloading video content over aUMTS network, which includes a RAN 26 and a CN 36. RAN 26 includes oneor more base stations 28, which may also be referred to “Node Bs,” and aradio network controller (RNC) 34, which manages the flow ofcommunication traffic to and from base stations 28. Users 30 userespective client devices 32, which may also be referred to as “UserEquipment (UE)” or simply as “clients,” to download and consume content,which is provided by one or more content-delivery servers 38. Eachclient 32 is serviced by the base station serving the cell in which theclient is located.

Typically, system 20 resides between RAN 26 and CN 36, such that alldata packets exchanged between the RAN and the CN pass through thesystem. In such embodiments, the system may delay packets en-route tothe RAN, and/or may modify packets exchanged between the RAN and the CN,as described above. In other embodiments, system 20 resides outside ofthe cellular network, and passively monitors the communication of dataover the network, by receiving copies of each data packet from a networktap situated between the RAN and the CN.

System 20 comprises a network interface, such as a network interfacecontroller (NIC) 22, and a processor 24. Each data packet (or a copythereof, in passive-monitoring embodiments) is received by processor 24,via NIC 22. From the “control plane” signaling packets, the processorascertains the respective locations of clients 32. For example, theprocessor may ascertain, based on a particular signaling packet, that aparticular client has entered a new cell. The processor associates thisinformation with the “data plane” (or “user plane”) packets, such as tomonitor and manage the downloading of video content as described herein.For example, further to ascertaining, from a signaling packet, that aparticular client has entered a new cell, the processor may identifythat a particular downlink data-plane packet is destined for the client,based on a common ID (such as a tunnel ID) and/or IP address appearingin both the signaling packet and the downlink data-plane packet.

Further to receiving an uplink or downlink data-plane packet, theprocessor may record information from the packet, as further describedbelow with reference to FIG. 2. (For example, the processor may recordthe number of bytes in a downlink data-plane packet.) The processor mayfurther ascertain the type of content that the packet contains, anddelay or modify the packet responsively thereto. For example, if adownlink data-plane packet contains video content destined for theclient, the processor may delay the packet before passing the packet tothe RAN, in order to facilitate achieving a desired download rate. Ingeneral, the processor may use any suitable technique for identifyingthe type of content that a particular data-plane packet contains, suchas any of the techniques described in U.S. Pat. No. 9,521,060, whosedisclosure is incorporated herein by reference. For example, in theevent that a particular data-plane packet is encrypted, the processormay deduce the type of content that the data-plane packet contains,based on Domain Name System (DNS) messages received prior to receivingthe packet.

Notwithstanding the particular type of cellular network shown, it isnoted that system 20 may be used to manage the downloading of videocontent over any type of cellular network, such as, for example, an LTEnetwork.

Processor 24 may be embodied as a single processor, or as acooperatively networked or clustered set of processors. In someembodiments, processor 24 is implemented solely in hardware, e.g., usingone or more field-programmable gate arrays (FPGAs). In otherembodiments, processor 24 is at least partly implemented in software.For example, processor 24 may be a programmed digital computing devicecomprising a central processing unit (CPU), random access memory (RAM),non-volatile secondary storage, such as a hard drive or CD ROM drive,network interfaces, and/or peripheral devices. Program code, includingsoftware programs, and/or data are loaded into the RAM for execution andprocessing by the CPU and results are generated for display, output,transmittal, or storage, as is known in the art. The program code and/ordata may be downloaded to the processor in electronic form, over anetwork, for example, or it may, alternatively or additionally, beprovided and/or stored on non-transitory tangible media, such asmagnetic, optical, or electronic memory. Such program code and/or data,when provided to the processor, produce a machine or special-purposecomputer, configured to perform the tasks described herein.

In some embodiments, processor 24 is implemented on a virtualizedplatform, e.g., using network functions virtualization (NFV).

Calculating the Maximum Sustainable Encoding Bit Rate

Reference is now made to FIG. 2, which is a schematic illustration of acyclic array 40 maintained by processor 24 for a particular client and aparticular base station in a cellular network, in accordance with someembodiments of the present invention. (In general, the processor maymaintain a separate instance of array 40 for each client-base-stationpair in the cellular network.)

Array 40 includes a plurality of buckets {B_(i)}, corresponding tosuccessive intervals of time, which are typically of equal duration T.(For example, T may be 8 ms, such that the buckets correspond tosuccessive intervals of 8 ms.) Each bucket typically contains a numberN_(i) of bytes of streamed content destined for the client, via the basestation, that were received by the processor during the interval of timeto which the bucket corresponds. Such content may include video contentfrom a video server, and/or other content. FIG. 2 explicitly labels tensuch buckets B₁ . . . B₁₀, and shows, within these ten buckets,respectively, numbers N₁ . . . N₁₀ of bytes. (To avoid any confusion, itis noted that only numbers of bytes—not the bytes themselves—are storedwithin the buckets.)

A first pointer 42 points to the current bucket, corresponding to thecurrent time interval. For each packet (belonging to a video stream, orany other stream) destined for the client that is received by theprocessor during this time interval, the processor records, in thebucket, an identifier of the packet, such as the TCP sequence number and4-tuple of the packet, and increments the number of bytes in the bucketby the number of bytes in the packet. Subsequently, at the end of thetime interval, first pointer 42 is moved to the next bucket. The nextbucket is then reset, i.e., any packet identifiers are removed from thebucket, and the number of bytes in the bucket is set to zero.Subsequently, as packets continue to arrive, the processor records therespective identifiers of these packets within this next bucket, andupdates the number of bytes in this next bucket. In this manner, firstpointer 42 continues to cycle through array 40.

For example, between 9:00:00:000 and 9:00:00:008, first pointer 42 maypoint to bucket B₉, such that the processor records, in bucket B₉, thenumber N₉ of bytes received between 9:00:00:000 and 9:00:00:008.Subsequently, between 9:00:00:008 and 9:00:00:016, first pointer 42 maypoint to bucket B₁₀, such that the processor records, in bucket B₁₀, thenumber N₁₀ of bytes received between 9:00:00:008 and 9:00:00:016.

In addition to receiving streamed packets destined for the client, theprocessor receives, from the client, acknowledge packets, which theclient sends in response to receiving the streamed packets. Based onthese acknowledge packets, the processor maintains a second pointer 44,which points to the bucket within array 40 that contains themost-recently acknowledged packet. In particular, upon receiving eachacknowledge packet, the processor identifies the packet identifierspecified by the acknowledge packet, and then locates this identifier inone of the buckets in array 40. The processor then updates secondpointer 44 to point to this bucket.

Based on first pointer 42 and second pointer 44, the processor mayestimate two important quantities, which facilitate updating the maximumsustainable encoding bit rate (MSEBR):

(i) First, the processor may estimate the number of bytes of streamedcontent (including any video content) destined for the client, via thebase station, that were not yet received by the client. Since,typically, any congestion in the RAN is due almost completely tocongestion between the base station and the client, the number ofunreceived bytes generally indicates the level of congestion in thecommunication channel between the base station and the client.

To estimate the number of unreceived bytes, the processor typicallyascertains the number of bytes that were not yet acknowledged by theclient, by counting the total number of bytes between the first andsecond pointers. (This technique assumes that, generally speaking, anyunacknowledged packets were not yet received by the client.) Forexample, in the example shown in FIG. 2, the processor may estimate thenumber of bytes of unreceived content as N_(U)=Σ_(i=6) ^(i=10)N_(i). Theprocessor may then compare a quantity based on N_(U), such as N_(U)itself or another quantity derived from N_(U), to a threshold. If thequantity remains greater than the threshold over a particular period oftime, the processor may identify a state of congestion in thecommunication channel between the base station and the client.

(In the context of the present application, including the claims, a“state of congestion” refers to a state in which, over a suitable periodof time as described above, the estimated amount of data within thecommunication channel, and/or a quantity derived therefrom, is greaterthan a threshold. For simplicity, the description below may refer to theclient as being “congested,” if the communication channel between thebase station and the client is congested.)

Typically, upon identifying a state of congestion, the processor updatesthe MSEBR. In most cases, the processor lowers the MSEBR; sometimes,however, the processor may raise the MSEBR, as described below withreference to FIG. 3.

For example, to identify a state of congestion, the processor may firstcalculate the current capacity of the base station via which thedownload is conducted, by estimating (e.g., as described immediatelybelow) the respective current communication bit rate (CBR) of eachclient currently downloading content via the base station, and thensumming these CBRs. This sum may be referred to as the “capacity” of thebase station, or, alternatively, as the total bandwidth B of the basestation. Subsequently, the processor may identify the number Nc ofactive clients that are utilizing more than a given percentage (e.g.,5%) of bandwidth B. The processor may then calculate a targetcommunication bit rate TCBR, which assumes an equal division ofbandwidth B amongst the active clients, by dividing B by N_(C)(TCBR=B/N_(C)). The processor may then divide N_(U), the number ofunreceived bytes, by TCBR, to obtain an estimated time that is requiredfor the as-yet unreceived bytes to be received by the client. If thisquantity (i.e., the quantity N_(U)/TCBR) remains greater than athreshold amount of time (e.g., 100 ms) for at least a certain period oftime (e.g., 256 ms), the processor may conclude that the client iscongested, and may therefore update the MSEBR.

(ii) Second, the processor may estimate the current CBR, i.e., theprocessor may estimate the rate at which the client is currentlydownloading content (including any video content), based on an estimatednumber of bytes of content that were received by the client during apreceding period of time (e.g., a period of one second) leading up tothe time of the last-acknowledged packet, which is pointed to secondpointer 44. For example, assuming that the j^(th) through k^(th) bucketsin array 40 cover a period of one second leading up to the time of thelast-acknowledged packet, the current CBR may be estimated as 8*Σ_(i=j)^(i=k)N_(i) bps, where the {N_(i)} are in units of bytes. If thisquantity exceeds the most recent (i.e., current) MSEBR by more than athreshold, the processor may update the MSEBR. For example, if theestimated current CBR is greater than (1/α) times the most recent MSEBR,where α is a scalar between 0 and 1, the processor may update thecurrent CBR.

Typically, the processor continually (e.g., periodically, such as every64 ms) updates the MSEBR, by calculating a weighted average of (i) themost recent MSEBR and (ii) a quantity that is based on the estimatedcurrent CBR, such as the CBR itself, or a multiple thereof. For example,the processor may calculate the new MSEBR as the sum of β*MSEBR and(1−β)*α*CBR, where α is the scalar defined above, and β is anotherscalar between 0 and 1.

Typically, the value of a is less than one (e.g., 0.8), such that, bymultiplying the estimated current CBR by α<1 for each weighted-averagecomputation, the processor causes the MSEBR to converge to less than theestimated current CBR. This provides a margin of safety, such that asubsequent decrease in the communication rate does not cause a stallingof the playback. For example, even if a download proceeds, for sometime, at a communication bit rate of approximately 1.2 Mbps, the MSEBRwill not converge to 1.2 Mbps; rather, the MSEBR will converge to onlyα*1.2 Mbps, such that an encoding bit rate that does not exceed α*1.2Mbps will be selected for the download. Furthermore, by using a value ofα that is less than one, the processor allows for the downloading ofother content simultaneously with the video download.

In general, β is chosen such as to provide the desired weighting to themost recent MSEBR, which is based on historical communication bit ratesat which content was downloaded (by the present client, and/or otherclients) via the base station. As described above in the Overview, itmay be advantageous to give a relatively large weighting to thehistorical communication bit rates, such as to limit the effect ofshort-term fluctuations in the communication bit rate. For example, βmay be 63/64, or any other suitable value that is close to one, suchthat the current MSEBR is given a much higher weighting than α*CBR inthe computation of the new MSEBR.

In some embodiments, the updating of the MSEBR, as described above, isimplemented in computer code that is based on the following pseudocode:

-   If(client_is_congested OR estimated_current_CBR>(1/α)*MSEBR)    -   MSEBR=β*MSEBR+(1−β)*α*estimated_current_CBR

Equivalently, (1/α)*MSEBR may be defined as the “congestion rate” CR,and the processor may continually update CR, and calculate the MSEBR asα*CR. The updating of CR may, for example, be implemented in computercode that is based on the following pseudocode, which is analogous tothe pseudocode above:

-   If(client_is_congested OR estimated_current_CBR>CR)    -   CR=β*CR+(1−β)*estimated_current_CBR

It is noted that FIG. 2 shows only one, of many, possibleimplementations of the MSEBR-update process. In general, any suitabletechnique for computing any suitable measure of congestion, and anysuitable technique for estimating the current CBR, are included withinthe scope of the present disclosure.

Typically, upon identifying that a given client is requesting todownload video content via a given base station, the processor checks ifthe client recently downloaded any content via the base station. If yes,the processor may use the most recent MSEBR calculated for the clientand base station. (In the event that the client recently downloadedother types of content, but not video content, the processor may derivean MSEBR from the most recent CR value.) Otherwise, the processor mayapply, to the video download, a default MSEBR for the base station,which may be calculated as described below. Similarly, upon the clientmoving to a new cell during the download, and hence switching to thebase station that covers the new cell, the processor may reinitializethe MSEBR, by applying, to the download, the default MSEBR that wascalculated for the new cell. (In any case, as the download proceedswithin the cell, the processor continually calculates an updated MSEBR,as described above.)

Typically, to check if the client recently downloaded content, theprocessor checks the time stamp of the most-recently streamed, ormost-recently acknowledged, packet that was received by the processoren-route to the client. If the time indicated by this time stamp iswithin a threshold (e.g., 30 seconds) of the current time, the mostrecent MSEBR (or an MSEBR derived from the most recent CR) is used;otherwise, the default MSEBR for the cell is used.

The default MSEBR is based on historical communication bit rates atwhich content was downloaded, via the base station, by any plurality ofdevices that recently used the base station. Typically, the processorcontinually (e.g., periodically, such as every 64 ms) updates thedefault MSEBR for each base station, by calculating a weighted averageof (i) the most recent default MSEBR for the base station (which isbased on the aforementioned historical communication bit rates), and(ii) a quantity that is based on current communication bit rates, and/orthe aforementioned historical communication bit rates.

For example, the processor may continually calculate a weighted averageof (i) the most recent default MSEBR, and (ii) the respective MSEBRs ofall currently congested clients utilizing the base station. Thisweighted average may be implemented, for example, in computer code thatis based on the following pseudocode:

-   For each client in cell    -   If(client is congested)        -   default_MSEBR=w*default_MSEBR+(1−w)*client_MSEBR

As with β, w, which is between 0 and 1, is chosen such as to provide thedesired weighting to the most recent default MSEBR. Typically, the valueof w is close to 1, such as, for example, 127/128.

As an alternative to the above-described weighted average, the processormay calculate a weighted average of the most recent default MSEBR withα*TCBR, where TCBR, it will be recalled, is a target communication bitrate that assumes an equal division of bandwidth amongst the activeclients. This alternative calculation may be implemented, for example,in computer code that is based on the following pseudocode:

-   -   default_MSEBR=w*default_MSEBR+(1−w)*α*TCBR

It is noted that the techniques described herein may be used with boththe TCP and User Datagram Protocol (UDP) protocols. Although UDP itselfdoes not provide acknowledgements, higher-level protocols implemented ontop of UDP, such as the Trivial File Transfer Protocol (TFTP), mayprovide an acknowledgement for each received packet, such that secondpointer 44 may be maintained as described above.

Applying the Maximum Sustainable Encoding Bit Rate

Further to calculating the MSEBR, the processor applies the MSEBR to thevideo download currently in progress, i.e., the processor inhibits theclient from downloading at an encoding bit rate that exceeds the MSEBR.Typically, the processor causes the client to download segments of videothat are encoded at the highest predefined bit rate that does not exceedthe MSEBR.

As described above in the Overview, the processor may apply the MSEBR bycontrolling the communication bit rate, such that the client refrainsfrom requesting, from the server, an encoding bit rate that exceeds theMSEBR. In this regard, reference is now made to FIG. 3, which is aschematic illustration of a technique for applying an MSEBR to a videodownload by managing a communication bit rate of the download, inaccordance with some embodiments of the present invention. FIG. 3 showsthe progression of a video download over time, starting at a time t0. Inthe particular example shown, the video is streamed in a plurality ofcommunication bursts 46. It is noted, however, that the principlesdescribed below with reference to FIG. 3 may also be applied to cases inwhich the video is streamed in a single communication burst. (Forsimplicity, FIG. 3 assumes that no other content, aside from the video,is being streamed to the client.)

FIG. 3 assumes that the processor manages the communication bit rate“CBR” by controlling the stream rate “SR” at which the server streamsvideo content to the client. The SR is indicated in the figure by asolid line, while the CBR is indicated by a dashed line. Where only asolid line is shown, the CBR coincides with the SR.

At time t0, following the request from the client to begin the download,the processor causes the server to begin streaming the video to theclient. Initially, the MSEBR has a value MSEBR₁, such that the encodingbit rate of the streamed video does not exceed MSEBR₁. (The initialvalue of MSEBR₁ may, for example, be the default MSEBR for the cell.)The processor, however, causes the video to be streamed, between time t0and a time t1, at a stream rate SR′ that significantly exceeds MSEBR₁,such that the client is congested, and downloads the streamed content atthe maximum achievable communication bit rate CBR₁.

Between time t0 and time t1, responsively to the client being congestedduring this interval, the processor updates the MSEBR, in accordancewith the rate CBR₁. For example, as described above, the processor mayrepeatedly, between time t0 and t1, calculate a weighted average of theMSEBR with α*CBR₁ (e.g., 0.8*CBR₁) until the MSEBR converges to a newvalue, MSEBR₂, that is near, or equal to, α*CBR₁. At time t1, theprocessor stops applying the increased stream rate, and causes the videoto be streamed, between time t1 and a time t2 at which the first burst46 ends, at a stream rate that is near, or equal to, MSEBR₂. Bymaintaining the stream rate at MSEBR₂, the processor caps thecommunication bit rate at MSEBR₂, such that the client does not requestan encoding bit rate that is higher than MSEBR₂.

Subsequently, at a time t3, the second burst begins. Again, theprocessor causes the stream rate at the beginning of the burst, until atime t4, to have a value SR₂ that significantly exceeds MSEBR₂, suchthat the client becomes congested, and downloads at a maximum achievablecommunication bit rate CBR₂ that exceeds MSEBR₂. In response to CBR₂exceeding MSEBR₂ by more than a threshold (e.g., in response to CBR₂being greater than (1/α)*MSEBR₂, such that CBR₂ exceeds MSEBR₂ by morethan ((1/α)−1)*MSEBR₂), the processor calculates another MSEBR, MSEBR₃,that is greater than MSEBR₂. For example, the processor may repeatedlycalculate a weighted average of the MSEBR with α*CBR₂, until the MSEBRconverges to MSEBR₃. The processor then applies MSEBR₃ to thedownloading of the video, by setting the stream rate—and hence, thecommunication bit rate—near or equal to MSEBR₃, such that the clientdevice downloads, between time t4 and a time t5, segments of the videothat are encoded at the highest predefined bit rate that does not exceedMSEBR₃.

In this manner, the processor may continue to apply the MSEBR bycontrolling (in particular, capping) the communication bit rate, whilecontinually allowing the MSEBR to be reevaluated by applying anincreased stream rate—and hence, “testing” the communication channel—fora period of time. For cases in which the video is streamed in a sequenceof bursts, the increased stream rate may be applied at the beginning ofeach burst, as shown. For other cases in which the video is streamed ina single burst, the increased stream rate may be applied at thebeginning of the streaming, and then again, repeatedly, at any suitableinterval(s). The respective durations of the increased-stream-rateperiods may have any suitable values. The increased stream rate may, forexample, be a particular multiple of the MSEBR value at the start of theincreased-stream-rate period, such as 1.5 times the MSEBR value. Forexample, SR₁ may be a particular multiple of MSEBR₁, and SR₂ may be aparticular multiple of MSEBR₂.

(It is noted that an additional advantage of the firstincreased-stream-rate period, at the beginning of streaming, is that thestart delay to the playback of the video may be reduced.)

As noted above in the Overview, in some embodiments, rather thancontrolling the rate at which the video is streamed from the server, theprocessor controls the communication bit rate by delaying packets of thevideo en-route to the client. In such embodiments, the processormaintains a queue of any packets of the video received en-route to theclient, and releases packets from the queue to the client, such as toachieve the desired communication bit rate (i.e., such as to achieve thedesired rate of downloading by the client). To facilitate re-evaluatingthe MSEBR (e.g., at the beginning of each burst), the processor mayrelease a large number of packets within a short period of time, such asto cause the client to download the packets at the maximum achievablerate. FIG. 3 generally applies to such embodiments, in that the “SR”variable plotted in FIG. 3 may represent the rate at which packets arereleased, by the processor, to the client. One difference, however, isthat the increased-stream-rate (or “increased-release-rate”) periods—andespecially the increased-stream-rate period at the beginning of thefirst burst—may not be achievable, if the processor has not accumulatedenough packets in the queue.

(It is noted that another advantage of maintaining a queue of packets ofthe video, as described above, is that the processor may discard anypackets in the queue, in the event that the client sends the videoserver a request, such as a TCP reset request, to stop the currentflow.)

As described above in the Overview, alternatively to controlling thecommunication bit rate, the processor may apply the MSEBR by informingthe client of the MSEBR, such that the client requests the highestpre-defined bit rate that does exceed the MSEBR. As yet anotheralternative, the processor may inform the server of the MSEBR, such thatthe server chooses the appropriate encoding bit rate.

It will be appreciated by persons skilled in the art that the presentinvention is not limited to what has been particularly shown anddescribed hereinabove. Rather, the scope of embodiments of the presentinvention includes both combinations and subcombinations of the variousfeatures described hereinabove, as well as variations and modificationsthereof that are not in the prior art, which would occur to personsskilled in the art upon reading the foregoing description. Documentsincorporated by reference in the present patent application are to beconsidered an integral part of the application except that to the extentany terms are defined in these incorporated documents in a manner thatconflicts with the definitions made explicitly or implicitly in thepresent specification, only the definitions in the present specificationshould be considered.

1. A system, comprising: a network interface; and a processor,configured: to identify, via the network interface, a state ofcongestion in a communication channel between a base station belongingto a cellular network and a client device, to calculate, responsively tothe state of congestion, a maximum sustainable encoding bit rate (MSEBR)for a video that is being downloaded by the client device, from aserver, via the communication channel, the video being encoded at aplurality of different predefined bit rates, and to inhibit the clientdevice, in response to calculating the MSEBR, from downloading a segmentof the video that is encoded at any one of the predefined bit rates thatexceeds the MSEBR.
 2. The system according to claim 1, wherein theprocessor is configured to inhibit the client device from downloadingthe segment by causing the client device to download a different segmentof the video that is encoded at a highest one of the predefined bitrates that does not exceed the MSEBR.
 3. The system according to claim1, wherein the processor is configured to identify the state ofcongestion by ascertaining a number of bytes of streamed contentdestined for the client device that were not yet acknowledged by theclient device.
 4. The system according to claim 1, wherein the processoris configured to calculate the MSEBR based on historical communicationbit rates at which the video was downloaded, via the communicationchannel, by the client device.
 5. The system according to claim 4,wherein the processor is configured to calculate the MSEBR as a weightedaverage of (i) a most recent MSEBR, which is based on the historicalcommunication bit rates, and (ii) a quantity based on an estimatedcurrent communication bit rate at which content is being downloaded bythe client device.
 6. The system according to claim 5, wherein theprocessor is further configured to estimate the current communicationbit rate, based on an estimated number of bytes of content that werereceived by the client device during a preceding period of time.
 7. Thesystem according to claim 1, wherein the MSEBR is a first MSEBR, andwherein the processor is further configured: to estimate, subsequently,a current communication bit rate at which content is being downloaded bythe client device; to calculate a second MSEBR, responsively to theestimated current communication bit rate exceeding the first MSEBR bymore than a threshold; and to apply the second MSEBR to the downloadingof the video, by inhibiting the client device from downloading a segmentof the video that is encoded at any one of the predefined bit rates thatexceeds the second MSEBR.
 8. The system according to claim 7, whereinthe processor is further configured to cause the communication bit rateto exceed the first MSEBR by more than the threshold, by controlling thecommunication bit rate.
 9. The system according to claim 1, wherein theprocessor is configured to inhibit the client device from downloadingthe segment by controlling a communication bit rate at which the clientdevice downloads content, such that the client device refrains fromrequesting the segment from the server.
 10. The system according toclaim 9, wherein the processor is configured to control thecommunication bit rate by: receiving streamed packets en-route to theclient device, and releasing the packets, to the client device, such asto achieve a desired communication bit rate.
 11. The system according toclaim 1, wherein the processor is configured to inhibit the clientdevice from downloading the segment by communicating the MSEBR to theclient device, such that the client device refrains from requesting thesegment from the server.
 12. A system, comprising: a network interface;and a processor, configured: to calculate a default maximum sustainableencoding bit rate (MSEBR) for a base station belonging to a cellularnetwork, based on historical communication bit rates at which contentwas downloaded via the base station by a plurality of devices, toidentify, via the network interface, that a client device is requestingto download a video, from a server, via the base station, the videobeing encoded at a plurality of different predefined bit rates, and toinhibit the client device, in response to the identifying, fromdownloading a segment of the video that is encoded at any one of thepredefined bit rates that exceeds the default MSEBR.
 13. The systemaccording to claim 12, wherein the processor is configured to inhibitthe client device from downloading the segment by causing the clientdevice to download a different segment of the video that is encoded at ahighest one of the predefined bit rates that does not exceed the defaultMSEBR.
 14. The system according to claim 12, wherein the processor isconfigured to inhibit the client device from downloading the segment inresponse to the client device having switched to the base station whiledownloading the video.
 15. A method, comprising: using a processor,identifying a state of congestion in a communication channel between abase station belonging to a cellular network and a client device;responsively to the state of congestion, calculating a maximumsustainable encoding bit rate (MSEBR) for a video that is beingdownloaded by the client device, from a server, via the communicationchannel, the video being encoded at a plurality of different predefinedbit rates; and in response to calculating the MSEBR, inhibiting theclient device from downloading a segment of the video that is encoded atany one of the predefined bit rates that exceeds the MSEBR.
 16. Themethod according to claim 15, wherein inhibiting the client device fromdownloading the segment comprises inhibiting the client device fromdownloading the segment by causing the client device to download adifferent segment of the video that is encoded at a highest one of thepredefined bit rates that does not exceed the MSEBR.
 17. The methodaccording to claim 15, wherein identifying the state of congestioncomprises identifying the state of congestion by ascertaining a numberof bytes of streamed content destined for the client device that werenot yet acknowledged by the client device.
 18. The method according toclaim 15, wherein calculating the MSEBR comprises calculating the MSEBRbased on historical communication bit rates at which the video wasdownloaded, via the communication channel, by the client device.
 19. Themethod according to claim 18, wherein calculating the MSEBR comprisescalculating the MSEBR as a weighted average of (i) a most recent MSEBR,which is based on the historical communication bit rates, and (ii) aquantity based on an estimated current communication bit rate at whichcontent is being downloaded by the client device.
 20. The methodaccording to claim 19, further comprising estimating the currentcommunication bit rate, based on an estimated number of bytes of contentthat were received by the client during a preceding period of time. 21.The method according to claim 15, wherein the MSEBR is a first MSEBR,and wherein the method further comprises, subsequently: estimating acurrent communication bit rate at which content is being downloaded bythe client device; calculating a second MSEBR, responsively to theestimated current communication bit rate exceeding the first MSEBR bymore than a threshold; and applying the second MSEBR to the downloadingof the video, by inhibiting the client device from downloading a segmentof the video that is encoded at any one of the predefined bit rates thatexceeds the second MSEBR.
 22. The method according to claim 21, furthercomprising causing the communication bit rate to exceed the first MSEBRby more than the threshold, by controlling the communication bit rate.23. The method according to claim 15, wherein inhibiting the clientdevice from downloading the segment comprises inhibiting the clientdevice from downloading the segment by controlling a communication bitrate at which the client device downloads content, such that the clientdevice refrains from requesting the segment from the server.
 24. Themethod according to claim 23, wherein controlling the communication bitrate comprises controlling the communication bit rate by: receivingstreamed packets en-route to the client device, and releasing thepackets, to the client device, such as to achieve a desiredcommunication bit rate.
 25. The method according to claim 15, whereininhibiting the client device from downloading the segment comprisesinhibiting the client device from downloading the segment bycommunicating the MSEBR to the client device, such that the clientdevice refrains from requesting the segment from the server.
 26. Amethod, comprising: using a processor, calculating a default maximumsustainable encoding bit rate (MSEBR) for a base station belonging to acellular network, based on historical communication bit rates at whichcontent was downloaded via the base station by a plurality of devices;identifying that a client device is requesting to download a video, froma server, via the base station, the video being encoded at a pluralityof different predefined bit rates; and in response thereto, inhibitingthe client device from downloading a segment of the video that isencoded at any one of the predefined bit rates that exceeds the defaultMSEBR.
 27. The method according to claim 26, wherein inhibiting theclient device from downloading the segment comprises inhibiting theclient device from downloading the segment by causing the client deviceto download a different segment of the video that is encoded at ahighest one of the predefined bit rates that does not exceed the defaultMSEBR.
 28. The method according to claim 26, wherein inhibiting theclient device from downloading the segment comprises inhibiting theclient device from downloading the segment in response to the clientdevice having switched to the base station while downloading the video.